﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int LTD;
//定义双向链表节点的结构
typedef struct ListNode
{
	LTD data;
	struct ListNode* next;
	struct ListNode* prev;
}LN;

//声明双向链表中提供的方法
//初始化
//void LTInit(LTNode** pphead);
LN* LTInit();
//销毁函数
void LTDesTroy(LN* phead);
//打印
void LTPrint(LN* phead);
//插入数据之前，链表必须初始化到只有一个头结点的情况
//不改变哨兵位的地址，因此传一级即可
//尾插
void LTPushBack(LN* phead, LTD x);
//头插
void LTPushFront(LN* phead, LTD x);
//尾删
void LTPopBack(LN* phead);
//头删
void LTPopFront(LN* phead);
//在pos位置之后插入数据
void LTInsert(LN* pos, LTD x);
//删除pos节点
void LTErase(LN* pos);
//查找
LN* LTFind(LN* phead, LTD x);